Implicit এবং Explicit Cursors

Database Tutorials - পিএল/এসকিউএল (PL/SQL) - PL/SQL এর Cursor Management
267

PL/SQL-এ Cursors হল একটি বিশেষ ধরনের সিস্টেম যা ডেটাবেসের রেকর্ডগুলি প্রক্রিয়া করার জন্য ব্যবহৃত হয়। Cursors ডেটাবেসের তথ্য পেতে এবং সেগুলি প্রোগ্রাম কোডে ব্যবহারের জন্য ব্যবহৃত হয়। সাধারণভাবে, Cursors দুটি প্রকারের হয়: Implicit Cursors এবং Explicit Cursors


১. Implicit Cursor (অটোমেটিক কার্সর)

Implicit Cursor হল Oracle ডাটাবেস দ্বারা অটোমেটিক্যালি তৈরি করা একটি cursor। যখন আপনি একটি SQL স্টেটমেন্ট (যেমন SELECT, INSERT, UPDATE, DELETE) চালান, তখন Oracle স্বয়ংক্রিয়ভাবে এই Implicit Cursor তৈরি করে। এটি ডেটাবেসের কনফিগারেশন অনুসারে, ডেটা ফেচ করার এবং প্রক্রিয়া করার জন্য কোনো কোড লিখতে হয় না।

বিশেষত্ব:

  • স্বয়ংক্রিয়ভাবে তৈরি হয়: Oracle ডাটাবেস যখন একটি SELECT বা DML (Data Manipulation Language) স্টেটমেন্ট চালায়, তখন এটি অটোমেটিকভাবে একটি Implicit Cursor তৈরি করে।
  • ডেটা রিটার্নের পর কাজ: এটা সাধারণত একক সারির রেকর্ড বা প্রভাবিত সারির সংখ্যা রিটার্ন করতে ব্যবহৃত হয়।
  • পদক্ষেপ নির্ধারণ: SQL%FOUND, SQL%NOTFOUND, SQL%ROWCOUNT এবং SQL%ISOPEN এর মতো system attributes দ্বারা আপনি Implicit Cursor এর অবস্থা চেক করতে পারেন।

উদাহরণ:

DECLARE
    v_emp_name VARCHAR2(50);
BEGIN
    -- Implicit Cursor for SELECT query
    SELECT employee_name INTO v_emp_name
    FROM employees
    WHERE employee_id = 101;

    DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_emp_name);
END;

এখানে:

  • SELECT স্টেটমেন্টের জন্য Oracle নিজে থেকেই Implicit Cursor তৈরি করেছে।
  • v_emp_name ভেরিয়েবলে একটি রেকর্ড ফেচ করা হয়েছে।

System Attributes:

  • SQL%FOUND: যখন কোনো রেকর্ড পাওয়া যায়, তখন এটি TRUE রিটার্ন করে।
  • SQL%NOTFOUND: যখন কোনো রেকর্ড পাওয়া না যায়, তখন এটি TRUE রিটার্ন করে।
  • SQL%ROWCOUNT: প্রভাবিত সারির সংখ্যা প্রদান করে।
  • SQL%ISOPEN: যদি cursor খোলা থাকে, তবে এটি TRUE রিটার্ন করে।

২. Explicit Cursor (স্পষ্ট কার্সর)

Explicit Cursor হল একটি প্ল্যানড এবং কাস্টমাইজড Cursor যা প্রোগ্রামার দ্বারা ম্যানুয়ালি তৈরি করা হয়। এটি তখন ব্যবহৃত হয় যখন আপনি একাধিক রেকর্ড বা বড় ফলাফল সেটের সাথে কাজ করতে চান এবং ফলাফল সেটের উপর নির্দিষ্টভাবে কাজ করতে চান।

বিশেষত্ব:

  • ম্যানুয়ালি তৈরি করতে হয়: Explicit Cursor ব্যবহার করার জন্য আপনাকে DECLARE, OPEN, FETCH, এবং CLOSE স্টেটমেন্টগুলি ম্যানুয়ালি কোডে উল্লেখ করতে হয়।
  • একাধিক রেকর্ড: এটি একাধিক রেকর্ড ফেচ এবং পরিচালনা করার জন্য ব্যবহৃত হয়।
  • ফলাফল সেট পরিচালনা: Explicit Cursor ব্যবহারের সময় আপনি সারি সারি রেকর্ড প্রক্রিয়া করতে পারেন।

Explicit Cursor এর ধাপসমূহ:

  1. DECLARE: Cursor এর ঘোষণা করা।
  2. OPEN: Cursor খোলা এবং query চালানো।
  3. FETCH: Cursor থেকে ডেটা বের করা।
  4. CLOSE: Cursor বন্ধ করা।

উদাহরণ:

DECLARE
    CURSOR emp_cursor IS
        SELECT employee_id, employee_name
        FROM employees
        WHERE department_id = 10;
    
    v_emp_id employees.employee_id%TYPE;
    v_emp_name employees.employee_name%TYPE;
BEGIN
    OPEN emp_cursor;  -- Cursor open

    LOOP
        FETCH emp_cursor INTO v_emp_id, v_emp_name;  -- Fetch data into variables
        EXIT WHEN emp_cursor%NOTFOUND;  -- Exit loop if no data

        DBMS_OUTPUT.PUT_LINE('Employee ID: ' || v_emp_id || ', Name: ' || v_emp_name);
    END LOOP;

    CLOSE emp_cursor;  -- Close cursor
END;

এখানে:

  • emp_cursor হল একটি Explicit Cursor যা employees টেবিল থেকে ডেটা ফেচ করতে ব্যবহৃত হয়েছে।
  • FETCH স্টেটমেন্ট ব্যবহার করে একটি করে রেকর্ড ডেটা বের করা হয় এবং EXIT লুপটি ত্যাগ করে যদি কোনো রেকর্ড না থাকে।

System Attributes for Explicit Cursor:

  • %FOUND: যখন ফেচ করা রেকর্ড সফল হয়, এটি TRUE রিটার্ন করে।
  • %NOTFOUND: যখন ফেচ করা রেকর্ড না থাকে, এটি TRUE রিটার্ন করে।
  • %ROWCOUNT: ফেচ করা সারির সংখ্যা।
  • %ISOPEN: Cursor খোলা থাকলে এটি TRUE রিটার্ন করে।

Implicit এবং Explicit Cursors এর মধ্যে পার্থক্য

বিষয়Implicit CursorExplicit Cursor
ডিফিনেশনস্বয়ংক্রিয়ভাবে তৈরি হয়, কোন কোড লেখা লাগে না।ম্যানুয়ালি তৈরি এবং পরিচালিত হয়।
ব্যবহারসাধারণত একক SQL স্টেটমেন্টের জন্য ব্যবহৃত।একাধিক রেকর্ড প্রক্রিয়া করার জন্য ব্যবহৃত।
ডেটা ফেচিংএকক রেকর্ড ফেচ করতে ব্যবহৃত।একাধিক রেকর্ড ফেচ এবং প্রক্রিয়া করতে ব্যবহৃত।
রিটার্ন ভ্যালুশুধুমাত্র একটি একক মান বা রেকর্ড রিটার্ন করে।একাধিক রেকর্ড রিটার্ন করতে সক্ষম।
System AttributesSQL%FOUND, SQL%NOTFOUND, SQL%ROWCOUNT, SQL%ISOPENcursor_name%FOUND, cursor_name%NOTFOUND, cursor_name%ROWCOUNT, cursor_name%ISOPEN
স্টেপসশুধুমাত্র SQL স্টেটমেন্ট চালালেই চলে।DECLARE, OPEN, FETCH, CLOSE ব্যবহার করতে হয়।
প্রকারস্বয়ংক্রিয় (Implicit)।ম্যানুয়ালি নির্ধারিত (Explicit)।

সারাংশ:

  • Implicit Cursor হল Oracle দ্বারা স্বয়ংক্রিয়ভাবে তৈরি একটি Cursor যা সাধারণত একক SQL স্টেটমেন্ট (যেমন SELECT, INSERT, UPDATE, DELETE) কার্যকর করার জন্য ব্যবহৃত হয়।
  • Explicit Cursor হল একটি কাস্টমাইজড Cursor যা ম্যানুয়ালি তৈরি এবং পরিচালিত হয়, এবং এটি একাধিক রেকর্ড পরিচালনা করতে ব্যবহৃত হয়।

Explicit Cursor ব্যবহার করলে আপনি আরও অনেক বেশি নিয়ন্ত্রণ এবং ফাইন টিউনিং করতে পারবেন, বিশেষ করে যখন একাধিক রেকর্ডের সাথে কাজ করছেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...